在 Flutter 中任何東西都是 Widgets !
因此就算是 Layout 本身也是 Widgets 的一環。
而其中包含上個章節所提到 Row 、 Column
以及這章節提及的 ListView 、 GridView  ... 等 Widgets
那我們就從官方所提及的 Layout 開始上手吧!
![]()
從官方的這張範例中,我們首先要學會由上至下切分。
可切分為:

而圖上的 Container 可視同為網頁開發中常用的 <div>
可讓我們為底下的 Widgets 加上各式各樣的描述,Ex. padding, margins, borders, background color... 等
接下來讓我們嘗試實作看看吧!
從昨天透過 flutter create <project_name> 所開啟的範例讓我們來修改 lib/main.dart 吧!
修改後程式碼
import 'package:flutter/material.dart';
void main() {
  runApp(const MyApp());
}
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}
class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Row(children: [
          Column(
            children: const [Icon(Icons.call), Text("Call")],
          ),
          Column(
            children: const [Icon(Icons.rocket), Text("Rocket")],
          ),
          Column(
            children: const [Icon(Icons.share), Text("Share")],
          ),
        ]),
      ),
    );
  }
}
效果如下,簡易的效果便出來了
當有多項 Widgets 要進行排列時,便可透過多個 Layout 及其他 Widgets 來達成效果

如圖上兩張圖片的內容便可透過 Row 及 Column 的相互交替使用來達成!
除了單純透過 Row、Column 及 Widgets 的組合實踐外
如果呈現的畫面要在 Material Design 的方式下呈現可以嘗試
ListTile 來替代 Row, ListTile 預設提供許多實用的參數供使用者呼叫
而在 Column 的方面則可透過 ListView  來取代
而其所帶來的方便性便是 當呈現的畫面超過整個屏幕時
可自動讓使用者透過滑動來查看整個列表
讓我們把話題回到 Row 及 Column 上,在這兩個 Widgets 中我們可以設定以下相關資訊